package com.my.aslife.service;

import com.my.aslife.module.common.PageRequestVo;
import com.my.aslife.module.common.ResponseResult;
import com.baomidou.mybatisplus.extension.service.IService;
import com.my.aslife.module.entity.Demand;
import com.my.aslife.module.entity.dtos.DemandAcceptDto;
import com.my.aslife.module.entity.dtos.DemandAddDto;
import com.my.aslife.module.entity.dtos.DemandQueryDto;
import com.my.aslife.module.entity.dtos.DemandUpdateDto;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author jobob
 * @since 2022-12-12
 */
public interface DemandService extends IService<Demand> {

    ResponseResult insertDemandInfo(DemandAddDto demandAddDto);

    ResponseResult getDemandInfoForList(Integer uid);

    /**
     * key status 查询数据
     * @param demandQueryDto dto
     * @return ResponseResult
     */
    ResponseResult queryDemandInfo(DemandQueryDto demandQueryDto);

    /**
     *  更新需求订单地址，地址表先删除再插入
     * @param demandUpdateDto demandUpdateDto
     * @return ResponseResult
     */
    ResponseResult updateAddress(DemandUpdateDto demandUpdateDto);

    /**
     * 删除需求订单
     * @param addressKey addressKey
     * @return ResponseResult
     */
    ResponseResult deleteDemandByAddressKey(String addressKey);

    /**
     *  获取已发布的需求订单
     * @return ResponseResult
     */
    ResponseResult getPassDemandList(Long uid);

    /**
     *  跑腿者接受订单任务 （代码已移植Order的接单服务）
     * @param demandAcceptDto demandAcceptDto
     * @return
     */
    ResponseResult acceptDemand(DemandAcceptDto demandAcceptDto);

    /**
     *  根据需求订单key 查询订单
     * @param demandKey demandKey
     * @return ResponseResult
     */
    ResponseResult queryDemandByDemandKey(Long demandKey);

    /**
     *  设置需求订单已经被接收
     * @param demandKey setDemandStatusIsAccepted
     * @return
     */
    ResponseResult setDemandStatusIsAccepted(Long demandKey);

    ResponseResult updateOrderStatusIsFinish(String url, Long orderId);

    /**
     *  获取所有信息
     * @param pageRequestVo pageRequestVo
     * @return
     */
    ResponseResult getAllDemandInfo(PageRequestVo pageRequestVo);

    /**
     * 恢复金额
     * @param taskId taskId
     */
    void txMoney(Long taskId);

    /**
     * 订单完成
     * @param demand orderId
     * @return
     */
    ResponseResult runOk(Demand demand);

    ResponseResult adminOk(Long orderId);
}
